"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/26 9:33
@Description : 
面向对象的三大特征：
1. 封装
    类定义时将属性私有化 将方法公开化   __属性名   set_属性名()   get_属性名()
2.继承
定义了  PythonJuniorEngineer  PythonSeniorEngineer 两个类
分析:
 1. 类中有很多相同属性
 2. 类中的函数也相同
问题 ：代码的编写出现了冗余代码
解决: 继承  将多个类中的重复代码在进一步抽取  将共同的代码抽取到父类   子类可以继承父类中的代码

3.多态
"""
# 工程师父类
class Engineer:
    name = None
    age = None
    salary = None

    def __init__(self, name, age, salary):
        self.name = name
        self.age = age
        self.salary = salary


# python初级工程师  子类  继承       class 类名(父类)：
class PythonJuniorEngineer(Engineer):

    # 编写代码
    def write_code(self):
        print(f'{self.name}是一个python初级工程师，可以编写简单的python代码')


# python高级工程师  子类
class PythonSeniorEngineer(Engineer):
    # 编写代码
    def write_code(self):
        print(f'{self.name}是一个python高级工程师，可以编写复杂的python代码')


if __name__ == '__main__':
    junior_engineer = PythonJuniorEngineer('tom', 20, 2000)
    print(junior_engineer.name)
    junior_engineer.write_code()

    senior_engineer = PythonSeniorEngineer('jack', 25, 3000)
    print(senior_engineer.name)
    senior_engineer.write_code()
